package lhc.alg.top100;

/**
 * description: https://leetcode.cn/problems/string-compression/
 *  压缩字符串
 * author: hongchen.liao
 * date:  2022/9/10
 */
public class _443_ {

    class Solution {
        public int compress(char[] chars) {
            int n = chars.length;
            int write = 0, left = 0;
            for (int read = 0; read < n; read++) {
                if (read == n - 1 || chars[read] != chars[read + 1]) {
                    chars[write++] = chars[read];
                    int num = read - left + 1;
                    if (num > 1) {
                        int anchor = write;
                        while (num > 0) {
                            chars[write++] = (char) (num % 10 + '0');
                            num /= 10;
                        }
                        reverse(chars, anchor, write - 1);
                    }
                    left = read + 1;
                }
            }
            return write;
        }

        public void reverse(char[] chars, int left, int right) {
            while (left < right) {
                char temp = chars[left];
                chars[left] = chars[right];
                chars[right] = temp;
                left++;
                right--;
            }
        }
    }


}
